﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace GestionApp
{
    public partial class FrmClientesDet : Form
    {
        public FrmClientesDet()
        {
            InitializeComponent();
        }

        private ModosOper ModOpe; 
        
        public void setModOpe(ModosOper modo) 
        { 
            ModOpe = modo; 
        }

        public void setCodigo(string codigo) 
        { 
            textCodigo.Text = codigo; 
        }


        private void FrmClientesDet_Load(object sender, EventArgs e)
        {
            // CARGA INICIAL DE INFORMACIÓN

            // Cargar Combo Provincias
            clsComunGestion.CargaComboProvincias(cboProvincia, true);

            // Si el modo de operación es Alta
            if (ModOpe == ModosOper.Alta)
            {
                // Asignar valores por defecto

                // Casi todos nuestros clientes son de la provincia de 'Málaga'
                cboProvincia.SelectedValue = "29";

                // El pago casi siempre se realiza con Tarjeta
                rbtPagoTarjeta.Checked = true;

                // A la check no se le asigna ningún valor
                // Por defecto seguirá estando desmarcada (false).
            }
            else
            {
                // Baja, Modificación o Consulta

                // Cargamos toda la información del Cliente
                CargaDatosCliente();
            }


            // CONFIGURACIÓN DEL ASPECTO VISUAL DE LA VENTANA

            if (ModOpe == ModosOper.Alta)
            {
                // Título
                this.Text = "Alta de Clientes";

                // Proteger la clave
                txtCodigo.Enabled = false;

                // Campos obligatorios -> Fondo amarillo
                txtNombre.BackColor = Color.LightGoldenrodYellow;
                txtApellidos.BackColor = Color.LightGoldenrodYellow;
                txtDNI.BackColor = Color.LightGoldenrodYellow;

                // Deshabilito el botón Aceptar
                btnAceptar.Enabled = false;
            }

            if (ModOpe == ModosOper.Baja)
            {
                // Título
                this.Text = "Baja de Clientes";

                // Proteger los campos
                // Recorrer en un bucle todos los controles del formulario actual
                foreach (Control xControl in this.Controls)
                {
                    //  Si no es un Button, deshabilito el control
                    if (xControl.GetType() != typeof(Button))
                    {
                        xControl.Enabled = false;
                    }
                }
            }

            if (ModOpe == ModosOper.Modificacion)
            {
                // Título
                this.Text = "Modificación de Clientes";

                // Proteger la clave
                txtCodigo.Enabled = false;

                // Campos obligatorios -> Fondo amarillo
                txtNombre.BackColor = Color.LightGoldenrodYellow;
                txtApellidos.BackColor = Color.LightGoldenrodYellow;
                txtDNI.BackColor = Color.LightGoldenrodYellow;
            }

            if (ModOpe == ModosOper.Consulta)
            {
                // Título
                this.Text = "Consulta de Clientes";

                // Proteger los campos
                // Recorrer en un bucle todos los controles del formulario actual
                foreach (Control xControl in this.Controls)
                {
                    //  Si no es un Button, deshabilito el control
                    if (xControl.GetType() != typeof(Button))
                    {
                        xControl.Enabled = false;
                    }
                }

                // Configurar los botones
                btnAceptar.Visible = false;
                btnCancelar.Text = "Aceptar";
            }
        } // Cierre: Load
        
        // Metodos
        // Función que desactiva el botón Aceptar si algún campo obligatorio
        // no está informado, y lo activa en caso contrario.
        private void activarAceptar(Button botonAceptar)
        {
            // Comprobar si todos los campos obligatorios están informados
            if (txtNombre.Text.Length == 0 | txtApellidos.Text.Length == 0 |
                txtDNI.Text.Length == 0 | txtFechaNac.Text.Length == 0)
            {
                // Deshabilitar el botón Aceptar
                botonAceptar.Enabled = false;
            }
            else
            {
                // Habilitar el botón Aceptar
                botonAceptar.Enabled = true;
            }
        }

        // Función para informar todos los campos de un Cliente
        private void CargaDatosCliente()
        {
            // Conexión con la base de datos
            MySqlConnection miConexion;

            // Comando SQL a ejecutar
            MySqlCommand miComando;
            MySqlDataReader miReader;   // Resultado de la selección
            string strSQL;              // Sentencia SQL a ejecutar

            // Crear la conexión con la base de datos 
            miConexion = new MySqlConnection();

            try
            {
                // Asignar la cadena de conexión a la base de datos
                miConexion.ConnectionString = clsComun.getCadenaConexionBD();

                // Abrir la conexión
                miConexion.Open();

                // Preparar la cadena con la sentencia SQL a ejecutar
                strSQL = "select * from clientes where cod_cli = " + txtCodigo.Text;

                // Ejecución de la consulta
                miComando = new MySqlCommand(strSQL, miConexion);

                // Ejecutar la consulta y almacenar el resultado en el objeto Reader
                miReader = miComando.ExecuteReader();

                // Si la consulta no ha devuelto ningún registro
                if (miReader.Read() == false)
                {
                    MessageBox.Show("El Cliente no existe.",
                                    "Error",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Error);
                }
                else
                {
                    // Mostrar la información en la ventana
                    txtNombre.Text = miReader.GetString("nombre");
                    txtApellidos.Text = miReader.GetString("apellidos");
                    txtDNI.Text = miReader.GetString("dni");
                    txtFechaNac.Text = miReader.GetString("fecha_nac");

                    if (miReader.IsDBNull(miReader.GetOrdinal("direccion")))
                        txtDireccion.Text = "";
                    else
                        txtDireccion.Text = miReader.GetString("direccion");

                    if (miReader.IsDBNull(miReader.GetOrdinal("poblacion")))
                        txtPoblacion.Text = "";
                    else
                        txtPoblacion.Text = miReader.GetString("poblacion");

                    if (miReader.IsDBNull(miReader.GetOrdinal("cod_postal")))
                        txtCodPostal.Text = "";
                    else
                        txtCodPostal.Text = miReader.GetString("cod_postal");

                    if (miReader.IsDBNull(miReader.GetOrdinal("cod_prov")))
                        cboProvincia.SelectedValue = 0;
                    else
                        cboProvincia.SelectedValue = miReader.GetInt32("cod_prov");

                    if (miReader.IsDBNull(miReader.GetOrdinal("tlf_fijo")))
                        txtTlfFijo.Text = "";
                    else
                        txtTlfFijo.Text = miReader.GetString("tlf_fijo");

                    if (miReader.IsDBNull(miReader.GetOrdinal("tlf_movil")))
                        txtTlfMovil.Text = "";
                    else
                        txtTlfMovil.Text = miReader.GetString("tlf_movil");

                    if (miReader.IsDBNull(miReader.GetOrdinal("email")))
                        txtEMail.Text = "";
                    else
                        txtEMail.Text = miReader.GetString("email");

                    chkVIP.Checked = Convert.ToBoolean(miReader.GetString("vip"));

                    switch (miReader.GetInt32("forma_pago"))
                    {
                        case (int)FormaPago.Efectivo:
                            rbtPagoEfectivo.Checked = true;
                            break;
                        case (int)FormaPago.Tarjeta:
                            rbtPagoTarjeta.Checked = true;
                            break;
                        case (int)FormaPago.Transferencia:
                            rbtPagoTransferencia.Checked = true;
                            break;
                    }

                    if (miReader.IsDBNull(miReader.GetOrdinal("notas")))
                        txtObservaciones.Text = "";
                    else
                        txtObservaciones.Text = miReader.GetString("notas");
                }

                // Cerrar el objeto Reader
                miReader.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message,
                                "Error",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
            finally
            {
                // Desconexión de la base de datos
                miConexion.Close();
            }
        }

        // Función para insertar en BD el nuevo Cliente
        private Boolean CrearCliente()
        {
            // Conexión con la base de datos
            MySqlConnection miConexion;

            // Comando SQL a ejecutar
            MySqlCommand miComando;
            MySqlDataReader miReader;   // Resultado de la selección
            string strSQL;              // Sentencia SQL a ejecutar

            int nuevoCodigo = 0;        // Código del nuevo cliente
            bool retorno;               // Valor de retorno

            // Crear la conexión con la base de datos 
            miConexion = new MySqlConnection();

            try
            {
                // Asignar la cadena de conexión a la base de datos
                miConexion.ConnectionString = clsComun.getCadenaConexionBD();

                // Abrir la conexión
                miConexion.Open();

                // OBTENER EL CÓDIGO DEL NUEVO CLIENTE

                // Ejecución de la consulta
                strSQL = "select max(cod_cli) as codigo from clientes";
                miComando = new MySqlCommand(strSQL, miConexion);

                // Procesar el resultado de la consulta SQL
                miReader = miComando.ExecuteReader();

                // Leer el elemento seleccionado
                miReader.Read();

                // Devolverá null si no hay ningún Cliente en la BD
                if (miReader.IsDBNull(miReader.GetOrdinal("codigo")))
                    nuevoCodigo = 0;
                else
                    nuevoCodigo = miReader.GetInt32("codigo");

                nuevoCodigo = nuevoCodigo + 1;      // Se asigna el siguiente código

                // Desconexión del DataReader
                miReader.Close();

                // INSERTAR EL NUEVO CLIENTE

                // Preparo la cadena de la sentencia INSERT a ejecutar
                strSQL = "INSERT INTO CLIENTES " +
                         "(cod_cli, nombre, apellidos, dni, fecha_nac, " +
                         "direccion, poblacion, cod_postal, cod_prov, " +
                         "tlf_fijo, tlf_movil, email, vip, forma_pago, notas) " +
                         "VALUES " +
                         "(@cod_cli, @nombre, @apellidos, @dni, @fecha_nac, " +
                         "@direccion, @poblacion, @cod_postal, @cod_prov, " +
                         "@tlf_fijo, @tlf_movil, @email, @vip, @forma_pago, @notas)";

                strSQL = strSQL.Replace("@cod_cli", nuevoCodigo.ToString());
                strSQL = strSQL.Replace("@nombre", "'" + txtNombre.Text + "'");
                strSQL = strSQL.Replace("@apellidos", "'" + txtApellidos.Text + "'");
                strSQL = strSQL.Replace("@dni", "'" + txtDNI.Text + "'");
                strSQL = strSQL.Replace("@fecha_nac",
                                        "'" + clsComun.FechaSQL(txtFechaNac.Value) + "'");

                if (txtDireccion.Text.Length == 0)
                    strSQL = strSQL.Replace("@direccion", "null");
                else
                    strSQL = strSQL.Replace("@direccion", "'" + txtDireccion.Text + "'");

                if (txtPoblacion.Text.Length == 0)
                    strSQL = strSQL.Replace("@poblacion", "null");
                else
                    strSQL = strSQL.Replace("@poblacion", "'" + txtPoblacion.Text + "'");

                if (txtCodPostal.Text.Length == 0)
                    strSQL = strSQL.Replace("@cod_postal", "null");
                else
                    strSQL = strSQL.Replace("@cod_postal", txtCodPostal.Text);

                // Si se ha seleccionado la provincia con código 0 (provincia vacía)
                if (cboProvincia.SelectedValue.ToString() == "0")
                    strSQL = strSQL.Replace("@cod_prov", "null");
                else
                    strSQL = strSQL.Replace("@cod_prov",
                                            cboProvincia.SelectedValue.ToString());

                if (txtTlfFijo.Text.Length == 0)
                    strSQL = strSQL.Replace("@tlf_fijo", "null");
                else
                    strSQL = strSQL.Replace("@tlf_fijo", txtTlfFijo.Text);

                if (txtTlfMovil.Text.Length == 0)
                    strSQL = strSQL.Replace("@tlf_movil", "null");
                else
                    strSQL = strSQL.Replace("@tlf_movil", txtTlfMovil.Text);

                if (txtEMail.Text.Length == 0)
                    strSQL = strSQL.Replace("@email", "null");
                else
                    strSQL = strSQL.Replace("@email", "'" + txtEMail.Text + "'");

                if (chkVIP.Checked)
                    strSQL = strSQL.Replace("@vip", "1");
                else
                    strSQL = strSQL.Replace("@vip", "0");

                if (rbtPagoEfectivo.Checked)
                    strSQL = strSQL.Replace("@forma_pago",
                                            FormaPago.Efectivo.ToString("d"));
                else if (rbtPagoTarjeta.Checked)
                    strSQL = strSQL.Replace("@forma_pago",
                                            FormaPago.Tarjeta.ToString("d"));
                else
                    strSQL = strSQL.Replace("@forma_pago",
                                            FormaPago.Transferencia.ToString("d"));

                if (txtObservaciones.Text.Length == 0)
                    strSQL = strSQL.Replace("@notas", "null");
                else
                    strSQL = strSQL.Replace("@notas", "'" + txtObservaciones.Text + "'");

                miComando = new MySqlCommand(strSQL, miConexion);

                // Ejecuto la sentencia SQL
                miComando.ExecuteNonQuery();

                // Mostrar mensaje de operación correcta. 
                // Si fuese errónea habría saltado la excepción
                MessageBox.Show("Operación realizada correctamente." + "\r" +
                                "Se ha creado el Cliente con el Código: " +
                                nuevoCodigo.ToString(),
                                "Aviso",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);

                // Se ha realizado el INSERT
                retorno = true;
            }
            catch (Exception ex)
            {
                // Mostrar mensaje de error
                MessageBox.Show(ex.Message,
                                "Error",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);

                // No se ha realizado el INSERT
                retorno = false;
            }
            finally
            {
                // Desconexión de la base de datos
                miConexion.Close();
            }

            return retorno;
        }


        // Función para modificar en BD el Cliente actual
        private Boolean ModificarCliente()
        {
            // Conexión con la base de datos
            MySqlConnection miConexion;

            // Comando SQL a ejecutar
            MySqlCommand miComando;
            string strSQL;              // Sentencia SQL a ejecutar

            int numReg;                 // Número de registros procesados
            bool retorno;               // Valor de retorno

            // Crear la conexión con la base de datos 
            miConexion = new MySqlConnection();

            try
            {
                // Asignar la cadena de conexión a la base de datos
                miConexion.ConnectionString = clsComun.getCadenaConexionBD();

                // Abrir la conexión
                miConexion.Open();

                // ACTUALIZAR EL CLIENTE

                // Preparar la cadena de la sentencia UPDATE a ejecutar
                strSQL = "UPDATE CLIENTES SET " +
                            "nombre = @nombre, apellidos = @apellidos, dni = @dni, " +
                            "fecha_nac = @fecha_nac, direccion = @direccion, " +
                            "poblacion = @poblacion, cod_postal = @cod_postal, " +
                            "cod_prov = @cod_prov, tlf_fijo = @tlf_fijo, " +
                            "tlf_movil = @tlf_movil, email = @email, vip = @vip, " +
                            "forma_pago = @forma_pago, notas = @notas " +
                            "WHERE cod_cli = @cod_cli";

                strSQL = strSQL.Replace("@cod_cli", txtCodigo.Text);
                strSQL = strSQL.Replace("@nombre", "'" + txtNombre.Text + "'");
                strSQL = strSQL.Replace("@apellidos", "'" + txtApellidos.Text + "'");
                strSQL = strSQL.Replace("@dni", "'" + txtDNI.Text + "'");
                strSQL = strSQL.Replace("@fecha_nac",
                                        "'" + clsComun.FechaSQL(txtFechaNac.Value) + "'");

                if (txtDireccion.Text.Length == 0)
                    strSQL = strSQL.Replace("@direccion", "null");
                else
                    strSQL = strSQL.Replace("@direccion", "'" + txtDireccion.Text + "'");

                if (txtPoblacion.Text.Length == 0)
                    strSQL = strSQL.Replace("@poblacion", "null");
                else
                    strSQL = strSQL.Replace("@poblacion", "'" + txtPoblacion.Text + "'");

                if (txtCodPostal.Text.Length == 0)
                    strSQL = strSQL.Replace("@cod_postal", "null");
                else
                    strSQL = strSQL.Replace("@cod_postal", txtCodPostal.Text);

                // Si se ha seleccionado la provincia con código 0 (provincia vacía)
                if (cboProvincia.SelectedValue.ToString() == "0")
                    strSQL = strSQL.Replace("@cod_prov", "null");
                else
                    strSQL = strSQL.Replace("@cod_prov",
                                            cboProvincia.SelectedValue.ToString());

                if (txtTlfFijo.Text.Length == 0)
                    strSQL = strSQL.Replace("@tlf_fijo", "null");
                else
                    strSQL = strSQL.Replace("@tlf_fijo", txtTlfFijo.Text);

                if (txtTlfMovil.Text.Length == 0)
                    strSQL = strSQL.Replace("@tlf_movil", "null");
                else
                    strSQL = strSQL.Replace("@tlf_movil", txtTlfMovil.Text);

                if (txtEMail.Text.Length == 0)
                    strSQL = strSQL.Replace("@email", "null");
                else
                    strSQL = strSQL.Replace("@email", "'" + txtEMail.Text + "'");

                if (chkVIP.Checked)
                    strSQL = strSQL.Replace("@vip", "1");
                else
                    strSQL = strSQL.Replace("@vip", "0");

                if (rbtPagoEfectivo.Checked)
                    strSQL = strSQL.Replace("@forma_pago",
                                            FormaPago.Efectivo.ToString("d"));
                else if (rbtPagoTarjeta.Checked)
                    strSQL = strSQL.Replace("@forma_pago",
                                            FormaPago.Tarjeta.ToString("d"));
                else
                    strSQL = strSQL.Replace("@forma_pago",
                                            FormaPago.Transferencia.ToString("d"));

                if (txtObservaciones.Text.Length == 0)
                    strSQL = strSQL.Replace("@notas", "null");
                else
                    strSQL = strSQL.Replace("@notas", "'" + txtObservaciones.Text + "'");

                miComando = new MySqlCommand(strSQL, miConexion);

                // Ejecutar la sentencia SQL
                numReg = miComando.ExecuteNonQuery();

                // Si el número de registros actualizados es 1
                if (numReg == 1)
                {
                    MessageBox.Show("Operación realizada correctamente.",
                                    "Aviso",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Information);

                    // Se ha realizado el UPDATE
                    retorno = true;
                }
                else
                {
                    // No se ha actualizado ningún registro
                    // Puede que haya sido eliminado por otro usuario
                    MessageBox.Show("No ha sido posible realizar la operación." + "\r" +
                                    "El Cliente ya no existe en la base de datos.",
                                    "Error",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Error);

                    // No se ha realizado el UPDATE
                    retorno = false;
                }
            }
            catch (Exception ex)
            {
                // Mostrar mensaje de error
                MessageBox.Show(ex.Message,
                                "Error",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);

                // No se ha realizado el UPDATE
                retorno = false;
            }
            finally
            {
                // Desconexión de la base de datos
                miConexion.Close();
            }

            return retorno;
        }

        // Función para borrar de BD el Cliente actual
        private Boolean BorrarCliente()
        {
            // Conexión con la base de datos
            MySqlConnection miConexion;

            // Comando SQL a ejecutar
            MySqlCommand miComando;
            string strSQL;              // Sentencia SQL a ejecutar

            int numReg;                 // Número de registros procesados
            bool retorno;               // Valor de retorno

            // Crear la conexión con la base de datos 
            miConexion = new MySqlConnection();

            try
            {
                // Asignar la cadena de conexión a la base de datos
                miConexion.ConnectionString = clsComun.getCadenaConexionBD();

                // Abrir la conexión
                miConexion.Open();

                // BORRAR EL CLIENTE

                // Preparar la cadena de la sentencia DELETE a ejecutar

                strSQL = "delete from clientes where cod_cli = @cod_cli";
                strSQL = strSQL.Replace("@cod_cli", txtCodigo.Text);

                miComando = new MySqlCommand(strSQL, miConexion);

                // Ejecutar la sentencia SQL
                numReg = miComando.ExecuteNonQuery();

                // Si el número de registros borrados es 1
                if (numReg == 1)
                {
                    MessageBox.Show("Operación realizada correctamente.",
                                    "Aviso",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Information);
                }
                else
                {
                    // No se ha borrado ningún registro
                    // Puede que haya sido eliminado por otro usuario
                    MessageBox.Show("No ha sido posible realizar la operación." + "\r" +
                                    "El Cliente ya no existe en la base de datos.",
                                    "Error",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Error);
                }

                // Se ha realizado el DELETE
                retorno = true;
            }
            catch (Exception ex)
            {
                // Mostrar mensaje de error
                MessageBox.Show(ex.Message,
                                "Error",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);

                // No se ha realizado el UPDATE
                retorno = false;
            }
            finally
            {
                // Desconexión de la base de datos
                miConexion.Close();
            }

            return retorno;
        }

        private void frmClientesDet_FormClosing(object sender, FormClosingEventArgs e)
        {
            DialogResult resp;  // Respuesta del usuario

            // Si es Alta o Modificación, el cierre lo realiza el Usuario, 
            // y no se hace habiendo pulsado Aceptar
            if ((ModOpe == ModosOper.Alta | ModOpe == ModosOper.Modificacion) &
                e.CloseReason == CloseReason.UserClosing &
                DialogResult != DialogResult.OK)
            {
                // Se pedirá confirmación al usuario
                resp = MessageBox.Show("Se perderán los cambios." + "\r" +
                                        "¿Desea continuar?",
                                        "Aviso",
                                        MessageBoxButtons.YesNo,
                                        MessageBoxIcon.Question);

                // Si la respuesta del usuario es NO
                if (resp == DialogResult.No)
                {
                    // Cancelar el cierre, el formulario seguirá abierto
                    e.Cancel = true;
                }
            }
        }

        // Eventos
        private void txtNombre_TextChanged(object sender, EventArgs e)
        {
            // Según el valor de cada campo, activar/desactivar Aceptar
            activarAceptar(btnAceptar);
        }

        private void txtApellidos_TextChanged(object sender, EventArgs e)
        {
            // Según el valor de cada campo, activar/desactivar Aceptar
            activarAceptar(btnAceptar);
        }

        private void txtDNI_TextChanged(object sender, EventArgs e)
        {
            // Según el valor de cada campo, activar/desactivar Aceptar
            activarAceptar(btnAceptar);
        }

        private void txtCodigo_KeyPress(object sender, KeyPressEventArgs e)
        {
            // Comprobar que la tecla pulsada es válida para un campo que solo contiene Números
            clsComun.TeclaNumero(sender, e);
        }

        private void txtDNI_KeyPress(object sender, KeyPressEventArgs e)
        {
            // Comprobar que la tecla pulsada es válida para un campo que solo contiene Letras y Números
            clsComun.TeclaLetraNumero(sender, e);
        }

        private void txtCodPostal_KeyPress(object sender, KeyPressEventArgs e)
        {
            // Comprobar que la tecla pulsada es válida para un campo que solo contiene Números
            clsComun.TeclaNumero(sender, e);
        }

        private void txtTlfFijo_KeyPress(object sender, KeyPressEventArgs e)
        {
            // Comprobar que la tecla pulsada es válida para un campo que solo contiene Números
            clsComun.TeclaNumero(sender, e);
        }

        private void txtTlfMovil_KeyPress(object sender, KeyPressEventArgs e)
        {
            // Comprobar que la tecla pulsada es válida para un campo que solo contiene Números
            clsComun.TeclaNumero(sender, e);
        }

        // Clicks
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            // Según el modo de operación, ejecuto la sentencia SQL correspondiente
            switch (ModOpe)
            {
                case ModosOper.Alta:

                    // Insertar en BD el nuevo Cliente
                    if (CrearCliente())
                    {
                        // El INSERT se ha ejecutado correctamente.

                        // Indicar que el cierre se produce aceptando la operación
                        this.DialogResult = DialogResult.OK;

                        // Se cierra la ventana.
                        this.Close();
                    }
                    break;

                case ModosOper.Baja:

                    // Borrar de BD el Cliente actual
                    if (BorrarCliente())
                    {
                        // El DELETE se ha ejecutado correctamente.

                        // Indico que el cierre se produce aceptando la operación
                        this.DialogResult = DialogResult.OK;

                        // Se cierra la ventana.
                        this.Close();
                    }
                    break;

                case ModosOper.Modificacion:

                    // Modificar en BD el Cliente
                    if (ModificarCliente())
                    {
                        // El UPDATE se ha ejecutado correctamente.

                        // Indico que el cierre se produce aceptando la operación
                        this.DialogResult = DialogResult.OK;

                        // Se cierra la ventana.
                        this.Close();
                    }
                    break;
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Close();

        }

    }
}
